package com.cloud.lawcase.api.service;

import java.util.List;

import com.cloud.lawcase.api.bean.DictBean;
import com.cloud.lawcase.api.entity.TcDicDef;
import com.cloud.lawcase.api.entity.TcDicLawEffectLevel;
import com.cloud.lawcase.api.entity.TcDicLawExcuteType;
import com.cloud.lawcase.api.entity.TcDicLawGroup;
import com.cloud.lawcase.api.entity.TcDicLawPublishDept;
import com.cloud.lawcase.api.entity.TcDicLawRegion;
import com.cloud.lawcase.api.entity.TcDicLawSx;
import com.cloud.lawcase.api.entity.TcDicLawType;
import com.cloud.lawcase.api.entity.TcDicUnitFunc;
import com.cloud.lawcase.api.entity.TcDicUnitFuncLevel;
import com.cloud.lawcase.common.result.QkTreeNode;

public interface LawDictService {
	/**
	 * 获取全部分组
	 * 
	 * @return
	 */
	List<TcDicDef> listDictDef();

	/**
	 * 获取指定数据字典樹
	 * 
	 * @param def
	 * @return
	 */
	QkTreeNode[] listDictTree(TcDicDef def);

	/**
	 * 新增或保存菜单项目
	 * @param bean
	 * @return
	 */
	DictBean saveUpdateDict(DictBean bean);
	
	/**
	 * 删除字典项
	 * @param bean
	 */
	void deleteDict(DictBean bean);
	
	/**
	 * 加载字典表详情信息
	 * @param dicDefId
	 * @param id
	 * @return
	 */
	DictBean loadDictDetail(int dicDefId, int id);
	
	/**
	 * 获取时效列表
	 * 
	 * @return
	 */
	List<TcDicLawSx> listSxItems();

	/**
	 * 获取法规类别列表
	 * 
	 * @return
	 */
	List<TcDicLawType> listLawTypeItems();

	/**
	 * 获取法规区划列表
	 * 
	 * @return
	 */
	List<TcDicLawRegion> listLawRegionItems();

	/**
	 * 获取法规效力级别列表
	 * 
	 * @return
	 */
	List<TcDicLawEffectLevel> listLawEffectLevelItems();

	/**
	 * 获取发布/批准部门列表
	 * 
	 * @return
	 */
	List<TcDicLawPublishDept> listLawPublishDeptItems();

	/**
	 * 加载执法类别
	 * @return
	 */
	List<TcDicLawExcuteType> listLawExcuteTypes();

	/**
	 * 加载分组
	 * @return
	 */
	List<TcDicLawGroup> listAllGroups();

	/** 职能部门 **/
	List<TcDicUnitFunc> listFuncUnits();
	
	
	List<TcDicUnitFuncLevel> listFuncUnitLevels();
	
	/**
	 * 获取分组树
	 * @return
	 */
	QkTreeNode[] listGroupTree();
	
	/**
	 * 刷新缓存
	 */
	void refreshCache();

}
